package cn.js.sangu.unitStore.service;

import cn.js.sangu.unitStore.entity.MessageBox;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 信箱服务接口
 */
public interface MessageBoxService extends IService<MessageBox> {
    /**
     * 存储离线消息
     * 
     * @param messageBox 消息对象
     * @return 存储后的消息对象，包含生成的ID
     */
    MessageBox saveOfflineMessage(MessageBox messageBox);

    /**
     * 查询用户的未读消息
     * 
     * @param userId 用户ID
     * @return 未读消息列表
     */
    List<MessageBox> getUnreadMessages(String userId);

    /**
     * 标记消息为已读
     * 
     * @param messageId 消息ID
     * @return 是否标记成功
     */
    boolean markAsRead(Long messageId);

    /**
     * 标记用户的所有消息为已读
     * 
     * @param userId 用户ID
     * @return 影响的行数
     */
    int markAllAsRead(String userId);

    /**
     * 获取用户的所有消息
     * 
     * @param userId 用户ID
     * @param limit  限制数量
     * @param offset 偏移量
     * @return 消息列表
     */
    List<MessageBox> getAllMessages(String userId, int limit, int offset);

    /**
     * 根据用户ID删除所有消息
     * 
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean removeByUserId(String userId);
}